/* Universidad del Valle de Guatemala
 * CC2003 - Algoritmos y Estructuras de Datos
 * HOJA DE TRABAJO #5.2
 * Fecha de Entrega: Jueves 22 de Septiembre de 2011
 */

/**
 * Interfaz que representa las acciones que puede realizar la Cola.
 * @author José Antonio Bagur - 10275
 */
public interface Queue <E> {
    
    /**
     * PRE: No posee ninguna precondición.
     * POST: El valor es añadido a la cola de la estructura. 
     * @param elemento
     * @throws QueueOverflow 
     */
    public void add(E elemento) throws QueueOverflow;
    
    /**
     * PRE: La cola no se encuentra vacía.
     * POST: Se remueve la cabeza de la cola
     * @return E elemento en la cabeza de la cola. 
     * @throws QueueUnderflow 
     */
    public E remove() throws QueueUnderflow;
    
    /**
     * PRE: La cola no se encuentra vacía.
     * POST: Regresa elemento en la cabeza de la cola. 
     * @return E elemento en la cabeza de la cola. 
     * @throws QueueUnderflow 
     */
    public E peek() throws QueueUnderflow;
    
} // FIN DE LA INTERFAZ
